package controller

import (
	"fmt"
	"go-gin-vue/ginessential/common"
	"go-gin-vue/ginessential/model"
	"log"
	"net/http"

	"github.com/gin-gonic/gin"
	"github.com/jinzhu/gorm"
)

// 登录函数
func Login(ctx *gin.Context) {
	// 引入数据库
	DB := common.GetDB()

	// 使用map 获取请求的参数
	requestMap := make(map[string]interface{})
	fmt.Println(requestMap)
	ctx.ShouldBind(&requestMap)
	fmt.Println(requestMap)

	var newUser = model.User{}

	//获取参数
	newUser.Id = requestMap["id"].(string)
	newUser.Password = requestMap["password"].(string)

	fmt.Println("id为：" + newUser.Id)
	fmt.Println("password为：" + newUser.Password)

	token, err := common.ReleaseToken(newUser)
	if err != nil {
		ctx.JSON(http.StatusInternalServerError, gin.H{"code": 500, "msg": "系统异常"})
		log.Printf("token generate err : %v", err) //记录日志
		return
	}

	if isIdExist(DB, newUser) {
		fmt.Println("登陆成功")
		ctx.JSON(200, gin.H{
			"status": 200,
			"msg":    "登陆成功",
			"token":  token,
		})
	} else {
		fmt.Println("用户名或密码错误")
		ctx.JSON(200, gin.H{
			"status": 422,
			"msg":    "用户名或密码错误",
		})
	}
}

// 判断用户是否存在
func isIdExist(db *gorm.DB, user model.User) bool {
	var exitedUser model.User
	// db.Table("users").Where("id = ? and password = ?", user.Id, user.Password).First(&exitedUser)
	db.Where("id = ? and password = ?", user.Id, user.Password).First(&exitedUser)
	return exitedUser.Id != ""
}

// 添加用户

// 返回所有的用户
//找到所有员工信息，并传回到网页上 （页面用）
func Set_Users(c *gin.Context) {
	DB := common.GetDB()
	var all_users []model.User //结构体数组
	// 显示所有的员工信息
	DB.Table("users").Find(&all_users)
	if all_users == nil {
		fmt.Println("没有找到用户！")
		c.JSON(422, gin.H{ //多传一些参数 可能会用到
			"status": 422,
			"users":  all_users, //试试传一个列表
			"msg":    "查找失败",
			"total":  len(all_users),
		})
	} else {
		fmt.Println(all_users)
		c.JSON(http.StatusOK, gin.H{ //多传一些参数 可能会用到
			"status": 200,
			"users":  all_users, //试试传一个列表
			"msg":    "查找成功",
			"total":  len(all_users),
		})
	}
}
